<?php

class LcznRender {
	
	private $registry;
	
	function __construct($registry) {
		$this->registry = $registry;
	}
	
	public function edicion() {
		$url = new Url();
		
		$tabla = $this->registry->router->controller;
		$campos = $this->registry->entidad["campos"];
		$entidad = $this->registry->entidadVO;
		
		$cuerpo = new Template();
		$cuerpo->rutaGuardar = $url->ruta();
		$url = null;

		foreach($campos as $campo) {
			$metodo = "get".ucfirst($campo->getNombre());

			if (isset($_POST[$campo->getNombre()])) {
				$valor = $_POST[$campo->getNombre()];
			} else {
				$valor = $entidad->$metodo();
			}

			$formulario[$campo->getNombre()]["valor"] = $valor;
			$formulario[$campo->getNombre()]["tipo"] = "text";

			switch($campo->getTipo()) {
				case "decimal":
					if (!isset($_POST[$campo->getNombre()])) {
						$formulario[$campo->getNombre()]["valor"] = Html::formatoNumero($entidad->$metodo());
					}
					break;
				case "date":
					if (!isset($_POST[$campo->getNombre()])) {
						$formulario[$campo->getNombre()]["valor"] = Html::formatoFecha($entidad->$metodo());
					}
					break;
				case "datetime":
				case "timestamp":
					if (!isset($_POST[$campo->getNombre()])) {
						$formulario[$campo->getNombre()]["valor"] = Html::formatoFechaHora($entidad->$metodo());
					}
					break;
				case "text":
					$formulario[$campo->getNombre()]["tipo"] = "textarea";
					break;
				case "tinyint":
					$formulario[$campo->getNombre()]["tipo"] = "checkbox";
					break;
			}

			$formulario[$campo->getNombre()]["deshabilitado"] = "";
			if($campo->getDeshabilitado() == true) {
				$formulario[$campo->getNombre()]["deshabilitado"] = "disabled=\"disabled\"";
			}

			if (!is_null($campo->getRelacion())) {
				$formulario[$campo->getNombre()]["tipo"] = "select";
				$relacion = $campo->getRelacion();
				$info = LcznBD::infoEntidad($relacion["tabla"]);
				$entidadesRel = LcznEntidadDAO::consultar($relacion["tabla"], $info["campos"]);
				$opciones = null;
				foreach($entidadesRel as $entidadRel) {
					$ids = Util::valorClavesEntidad($entidadRel, $info["claves"]);
					$opcion["clave"] = $ids;
					$opcion["valor"] = $ids;
					$opcion["seleccion"] = ($entidad->$metodo() == $ids);
					$opciones[] = $opcion;
				}
				$formulario[$campo->getNombre()]["opciones"] = $opciones;
			}
		}

		$url = new Url();
		$url->cambia("accion", null, true);
		$url->cambia("ids", null, true);
		$rutaAtras = $url->ruta();
		$url = null;
		
		$cuerpo->rutaAtras = $rutaAtras;
		$cuerpo->formulario = $formulario;
			
		$ids = intval($this->registry->router->ids);
			
		if (isset($_SESSION["modelo"][$tabla]["relaciones"]) && $ids > 0) {
			$url = new Url();
			$url->adelante();
			foreach($_SESSION["modelo"][$tabla]["relaciones"] as $relacion) {
				$url->cambia("controlador", $relacion, true);
				$parametros["ruta"] = $url->ruta();
				$parametros["nombre"] = $relacion;
				$submenus[] = $parametros;
			}
			$url = null;
			$cuerpo->submenus = $submenus;
		}
			
		$this->registry->template->cuerpo = $cuerpo;
		$this->registry->template->accion = "edicion";
			
		$this->registry->template->show('index');
		
	}
}
?>